Drift compensation for force sensing devices

ABSTRACT

Disclosed herein are methods and systems for compensating for drift that may be present in a force sensing device. In some embodiments, the force sensing device may be calibrated to compensate for the drift. The calibration may include receiving an input waveform associated with a received amount of force on the force sensing device. A system model that approximates a transfer function that provides an output waveform associated with the input waveform is then determined. Using the system model, an inverse transfer function associated with the system model is also determined. The inverse transfer function may then be applied to the output waveform which compensates for the drift.

TECHNICAL FIELD

The present disclosure generally relates to force sensing devices. Morespecifically, the present disclosure is directed to compensating fordrift that may occur in force sensing devices such as those used invarious computing devices.

BACKGROUND

Computing devices may use force sensors to detect a received force.However, due to different materials used in these force sensors, andmore specifically, due to different elastic deformation characteristicsof the materials and/or structures, the force sensor may not accuratelydetect the amount of force being applied at a particular time. Morespecifically, the force sensor may continue to detect that force isbeing applied to the force sensor even if the force has been removed asit may take some amount of time for the elastomeric material in theforce sensor to return to its original (e.g., nominal) position, shapeor state. In other cases, the force sensor may continue to detect anincrease in force even when a constant or substantially constant forceis applied to the force sensor. This increase in sensed force may alsobe caused by the elastic properties of the materials within the forcesensor and/or the structure of the force sensor.

In addition to the above, the elastic deformation of the materials inthe force sensor and/or the structure of the force sensor itself, maycause a delayed reaction associated with the received force input. Forexample, if a force input is received and the computing device does notreact to the received input a timely manner (e.g., updating a userinterface, launching an application and so on), the user experience withthe computing device may be diminished.

It is with respect to these and other general considerations thatembodiments have been made. Although relatively specific problems havebeen discussed, it should be understood that the embodiments should notbe limited to solving the specific problems identified in thisbackground.

SUMMARY

This summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription section. This summary is not intended to identify keyfeatures or essential features of the claimed subject matter, nor is itintended to be used as an aid in determining the scope of the claimedsubject matter.

Disclosed herein are methods and systems for compensating for drift thatmay be present in one or more force sensors of a computing device. Morespecifically, some embodiments described herein are directed towardcalibrating a force sensing device. In this implementation, an inputwaveform is received by the system. The input waveform is associatedwith a received amount of force that is or was provided on a forcesensing device. The system determines a system model that approximates atransfer function that provides an output waveform associated with theinput waveform. An inverse transfer function of the approximatedtransfer function is then determined. The inverse transfer function isthen applied to the output waveform. As will be explained below, theinverse transfer function compensates for drift that may be associatedwith the force sensing device which is manifest in the output waveform.

Also disclosed is a method and system for correcting drift associatedwith a force sensing device. The force sensing device may be associatedwith or otherwise integrated within a computing device. In someimplementations, an output signal may be received from the force sensingdevice. Once the output signal is received, an inverse filter is appliedto the output signal to generate a reconstructed output signal thatcompensates for drift. The inverse filter may be based, at least inpart, on a model of the force sensing device that is derived at the timethe computing device is calibrated.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments of the present disclosure will be readily understood by thefollowing detailed description in conjunction with the accompanyingdrawings. The elements of the drawings are not necessarily to scalerelative to each other. Identical reference numerals have been used,where possible, to designate identical features that are common to thefigures.

FIGS. 1A-1C illustrate exemplary computing devices that may incorporatea force sensor according to one or more embodiments of the presentdisclosure;

FIG. 2 illustrates an exemplary force sensor that may be used with thevarious computing devices shown in FIGS. 1A-1C according to one or moreembodiments of the present disclosure;

FIG. 3 is a graph that illustrates drift compensation according to oneor more embodiments of the present disclosure;

FIG. 4 illustrates an exemplary zero-pole plot graph that may be usedwhen compensating for drift according to one or more embodiments of thepresent disclosure;

FIG. 5 illustrates a method for calibrating a force sensor according toone or more embodiments of the present disclosure;

FIG. 6 illustrates a method for compensating for drift according to oneor more embodiments of the present disclosure; and

FIG. 7 is a block diagram illustrating exemplary components of acomputing device according to one or more embodiments of the presentdisclosure.

DETAILED DESCRIPTION

Various embodiments are described more fully below with reference to theaccompanying drawings, which form a part hereof, and which show specificexemplary embodiments. However, embodiments may be implemented in manydifferent forms and should not be construed as limited to theembodiments set forth herein; rather, these embodiments are provided sothat this disclosure will be thorough and complete, and will fullyconvey the scope of the embodiments to those skilled in the art. Thefollowing detailed description is, therefore, not to be taken in alimiting sense.

In some implementations, a computing device, such as those shown inFIGS. 1A-1C, a trackpad for a laptop computer or other input device mayuse a force sensing device to receive input from a user or an objectmanipulated by an object (e.g., stylus). The force sensing device may beassociated or integrated with a display on the computing device.Further, force received on the display and detected by the force sensingdevice may affect or otherwise change what is output on the display. Forexample, force input on the display may cause a processing unit of thecomputing device to alter a user interface that is output on thedisplay, launch an application, answer an incoming telephone call, andso on.

However, the force sensing device itself can affect the quality ofwaveforms that are output therefrom. For example, a waveform can bedistorted, attenuated, or otherwise affected as a result of thematerials and/or structure selected for a particular force sensingdevice. In other examples, the structure of the force sensing device canaffect the output waveform. In a more specific example, a force sensingtrackpad or other such input device may use one or more springmechanisms to detect force input. However, the coupling of the springsto a housing of the electronic device may cause the output waveform tobe distorted.

In a more specific example, and as will be described in more detailbelow, the force sensor may be comprised of a piezoelectric material.However, due to one or more elastic deformation characteristics of thepiezoelectric material, drift may be introduced into the system. Forexample, if force input is received and then subsequently removed fromthe force sensing device, the force sensing device may continue todetect an applied force as the piezoelectric material decompresses orotherwise returns to its non-compressed or otherwise returns to itsnominal state. Likewise, when force is applied to the force sensingdevice, the applied force may be constant or substantially constant butthe force sensing device may determine that the amount of force isincreasing as the piezoelectric material continues to contract due tothe applied force.

Accordingly, many embodiments described herein model the force sensingdevice as a linear time-invariant (“LTI”) system having a single inputand a single output. These embodiments can include a filter designed toaccount for the effects of the LTI system (e.g., inverse of the transferfunction). As a result of the filter, the waveform output from the forcesensing device may more accurately reproduce the input to the forcesensing device.

In these embodiments, the filter can correspond to the inverse of atransfer function that models the LTI behavior of the force sensingdevice. That is, in some embodiments, a model of the force sensingdevice may be used to approximate a transfer function associated withthe force sensing device. In some embodiments, the coefficients of thetransfer function model (and/or its inverse) can be approximatedanalytically. In other embodiments, the coefficients of the transferfunction model can be approximated experimentally. Accordingly, manyembodiments described herein relate to methods for efficientlyapproximating a transfer function and/or an inverse of the transferfunction (along with their coefficients) of a particular force sensingdevice given a particular input waveform. Thereafter, the transferfunction (or parameters that define the transfer function) can be savedas calibration parameters and can be used as an effective approximationof the transfer function for other waveforms.

The methods and devices described herein may be used with substantiallyany type of apparatus or device that utilizes a force sensing device.For example, FIGS. 1A-1C illustrate exemplary computing devices 100 thatmay be used with the various embodiments described herein. As shown inFIG. 1A, the computing device 100 may be a wearable computing device.Alternatively or additionally, as depicted in FIG. 1B and FIG. 1C, thecomputing device 100 may be a mobile telephone or a tablet computer. Itshould be noted that the computing devices 100 illustrated and describedare illustrative only and the embodiments described herein may be usedwith various other types of computing devices or computing devicesincluding, but not limited to, a desktop or laptop computer, a trackpador other such input device, a digital music player, a digital camera, apersonal digital assistant or the like.

As shown in FIGS. 1A-1C, the computing device 100 may include a display110. In some embodiments, the display 110 may include a touch sensorthat is configured to detect and measure the location of a touch on asurface of the computing device 100. In some implementations, the touchsensor is a capacitive touch sensor that is disposed relative to thedisplay 110 or a display stack of the computing device 100. The touchinput that is received on the display 110 may be used to control variousaspects of the computing device 100. For example, the touch input may beused to control an aspect of the user interface presented on the display110 and may also control or influence various other aspects,functionality and/or components of the computing device 100.

In some implementations, the computing device 100 may also include aforce sensing device that uses a force sensor configured to detect andmeasure the magnitude, direction, and/or location of a force of a touchon a surface of the computing device 100 such as, for example, thedisplay 110.

The input force may include a non-binary output that is generated inresponse to a touch. For example, the force may include a range ofvalues that corresponds to the amount of force exerted on the display110 of the computing device 100. Additionally or alternatively, theforce input may include binary (e.g., on, off) output in response to thereceived force. As with the touch input described above, the force inputmay be used to control various aspects of the computing device 100. Forexample, the force input may be used to control an aspect of a userinterface provided on the display 110, such as, a cursor or itemselection on the user interface. The force input may also be used tocontrol other components, aspects and/or functionality of the computingdevice 100.

In some implementations, the force input may be used to distinguishbetween different types of input received from a user. For example, alight touch from the user may be interpreted as a scroll command and/orcan be used to index through a list of items on the display 110. Aharder touch from the user may be interpreted as a selection orconfirmation of an item on the display 110. In some embodiments, theforce input may be used to distinguish an intentional touch from theuser from an incidental or accidental touch that should be ignored.

In some embodiments, the touch sensor may be a separate non-integratedsensor relative to the force sensor. In alternative embodiments, thetouch sensor may also be physically and/or logically integrated with theforce sensor to produce a combined output.

FIG. 2 depicts a cross-sectional view of a portion of a force sensingdevice 200 that may be used with one or more embodiments of the presentdisclosure. In some embodiments and as shown in FIG. 2, the forcesensing device 200 may be arranged around a perimeter of a display 110.As also shown in FIG. 2, a force-sensing structure 270 of the forcesensing device 200 may be disposed beneath a cover 230 associated withthe display 110 and along the side or the perimeter of the display 110.In this example, the force sensing device 200 is configured to detectand measure the amount of force of a touch on the surface 220 of thecover 230.

The force sensing device 200 may include a first capacitive plate 240and a second capacitive plate 260. In some embodiments, the firstcapacitive plate 240 may be fixed with respect to the cover 230.Likewise, the second capacitive plate 260 may be fixed with respect to ahousing 210 of the computing device and may be disposed on a shelf ormounting surface located along the perimeter of the computing device.The first capacitive plate 240 and the second capacitive plate 260 maybe separated by a compressible element 250. As noted, and although acapacitive plates may be used, the force sensing device may also becomprised of piezoelectric material.

In the configuration depicted in FIG. 2, touch that is received on thesurface 220 of the computing device may cause a force to be transmittedthrough the cover 230 to the force sensing device 200. In some cases,the received force causes the compressible element 250 to compress,thereby bringing the first capacitive plate 240 and the secondcapacitive plate 260 closer together. The change in distance between thefirst capacitive plate 240 and the second capacitive plate 260 mayresult in a change of capacitance. The change in capacitance may then bedetected and measured.

For example, in some cases, a force-sensing circuit may measure thischange in capacitance and output a signal that corresponds to themeasurement. A processing unit, integrated circuit or other electronicelement may correlate the circuit output to an estimate of the force ofthe touch. However, as discussed above, depending on the elasticdeformation characteristics of the compressible element 250, the outputsignal may not reflect an accurate amount of force being applied at aparticular time. Additionally, the output signal may cause a delayedreaction from the computing device. For example, a user interface thatis output on the display may not be updated in a timely manner or maycommit to an action (e.g., launch an application, select an icon and soon) too soon. Accordingly, the methods described below may be used toaccount for the drift and/or delay that may be associated with the forcesensing device 200.

Although the term “plate” may be used to describe certain elements, suchas the capacitive plates or conductive electrodes, it should beappreciated that the elements need not be rigid but may instead beflexible (as in the case of a trace or flex).

FIG. 3 is a graph 300 that illustrates how drift in a force sensingdevice can be accounted for according to one or more embodiments of thepresent disclosure. More specifically, the graph 300 illustrates how aninput force (e.g., a touch and release input force) received by a touchand/or force-sensing device may be reconstructed. For example, line 310illustrates a reconstructed force that is sensed by the force sensingdevice prior to drift correction. Likewise, line 320 illustrates adrift-corrected reconstructed force of the same received force input. Asshown in FIG. 3, the drift-corrected reconstructed force 320 may beflatter and/or have sharper edges when compared to the reconstructedforce 310. The flatter and sharper edges may provide better feedbackabout the amount of force provided by the user when compared to theforce that is not corrected.

As will be explained below, in order to generate or otherwise obtain thedrift-corrected reconstructed force 320, a system model of the forcesensing device is determined. More specifically, a system model of theforce sensing device is used to approximate a transfer function thatgenerates or otherwise provides the reconstructed force 310 outputdirectly from the force sensing device in response to a force receivedfrom a user. In embodiments described herein, the reconstructed force310 may be filtered with an inverse of the transfer function in order togenerate (or otherwise determine) the drift-corrected reconstructedforce 320.

As discussed above, the model may be a second-order system. For example,in some embodiments, the measurement of a force applied to a particularforce sensitive device can be affected by the mass of the forcesensitive device, the elastic deformation characteristics (e.g.,stiffness, spring constant, damping coefficient, and so on) of the forcesensitive device, the speed and/or acceleration with which the forcesensitive device is displaced in response to the applied force, and soon. Further, in many embodiments, the force sensitive device may beimplemented as a digital device. Accordingly, as a result of discretesampling of the analog (e.g., continuous) output of one or more analogforce sensors (e.g., capacitive, piezoelectric, and so on), the model ofthe force sensitive device may be a discrete time model. As such, theimpulse response of the transfer function of a second-order discretetime model may be defined, in the frequency domain (e.g., Z-transform),by the following equation:

${H(z)} = \frac{a_{0} + {a_{1}z^{- 1}}}{b_{0} + {b_{1}z^{- 1}} + {b_{2}z^{- 2}}}$

Although a second-order system is specifically mentioned, a higher orlower order system may be used. In some embodiments, the model of theforce sensing device may be mathematically defined as a frequency domainconvolution (e.g., multiplication) of a received amount of force withthe impulse response of the force sensitive device yielding an outputwaveform (the reconstructed force 310) which can be represented asfollows:X(z)·H(z)=Y(z)

In the above, X(z) may represent a Z-transform of a discrete time inputthat is associated with one or more discrete samples of a receivedamount of force, H(z) represents the impulse response of the system(e.g., the force sensing device) and Y(z) is a Z-transform of an outputwaveform that may be subject to drift (e.g., reconstructed force). Inmany cases, the system H(z) may be an unknown or unknowable system ormay otherwise have an unknown effect on the input waveform X(z). Forexample, the waveform (continuous or discrete) output from a forcesensitive device may not, in certain cases, accurately or preciselyrepresent the force received at a particular time due to one or moreelastic deformation characteristics of the materials in the forcesensing device and/or the structure of the force sensing device.

Thus, as described herein, even though the system H(z) may be unknown orunknowable, the reconstructed force 310 can be used to calibrate theforce sensitive device by assisting the approximation of a transferfunction associated with the system, the inverse of which can, in turn,be used to improve the accuracy and/or precision of future reconstructedforce measurements. That is, during a calibration operation, a specificinput force having a Z-transform of X(z) can be applied to theforce-sensitive device. As a result, because the input force X(z) isknown, and the reconstructed force Y(z) is measureable, and thecharacteristics and properties of the materials and/or structure of theforce sensing device are known or estimable, a model of the impulseresponse of the force sensing device may be determined. In one example,using the above second-order example impulse response equation and thereconstructed force 310, the coefficients (e.g. a₀, a₁, b₀, and so on)for the transfer function model may be determined or approximated. Insome embodiments, the coefficients may be determined using a lookuptable between the input waveform, the output waveform and the material(or the elastic deformation properties of the material and/or structure)used in the actual force sensing device. In another embodiment, thecoefficients may be determined by using various fit techniques such as,for one example, a polynomial fit on the reconstructed force 310.

Once the coefficients for the transfer function are selected, an inverseof the transfer function may be determined. In some embodiments, theinverse transfer function may be represented by the equation:

${{\overset{\sim}{H}}^{- 1}(z)} = \frac{b_{0} + {b_{1}z^{- 1}} + {b_{2}z^{- 2}}}{a_{0} + {a_{1}z^{- 1}}}$

More specifically, once the inverse transfer function is determined, theinverse transfer function may be applied to the output waveform Y(z) toobtain the drift-corrected reconstructed force 320 that matches orsubstantially matches the provided input force. Because the inverse ofthe transfer function is used on the reconstructed force Y(z), thedrift-corrected reconstructed force {tilde over (X)}(z) does not exhibitthe drift that may be present in or caused by the system.

In this manner, the entire system including the transfer function andits inverse described above, may be represented by:X(z)→H(z)→Y(z)→{tilde over (H)} ⁻¹(z)→{tilde over (X)}(z)

In certain embodiments, once the coefficients for the model H(z) aredetermined such as described above, the coefficients may be stored bythe computing device. For example, in some implementations, algebraicmanipulation of the discrete convolution of X(z) and H(z) can yieldcoefficients for H(z). The coefficients for the model can be stored infirmware of the computing device. Accordingly, as force input isreceived, the model, and its associated coefficients, may correct orotherwise account for the drift.

In some embodiments, it may be desirable to know or otherwise determinewhether the transfer function and the inverse transfer functiondescribed above are stable. For example, because the coefficients of thesystem may be determined experimentally, the coefficients of thetransfer function, and more specifically the coefficients of the inversetransfer function, may be unstable and provide undesired results forparticular force inputs.

As shown in FIG. 4, a zero-pole plot graph 400 may be used to plot thepoles 420 and zeros 410 of the transfer function and/or the inversetransfer function described above. In some cases, the poles and zeros ofthe transfer function are inverse from the poles and zeros of theinverse transfer function. In some embodiments, the stability of thesystem corresponds to the position of the poles 420 and zeros 410 withrespect to the unit circle 430.

For example, in some implementations, when the inverse transfer functionis stable, the poles of the inverse transfer function should lie insidethe unit circle 430. However, the farther the poles 420 and zeros 410are from the unit circle 430, the less drift compensation may be presentdespite that the system is more stable. Likewise, the closer the poles420 and zeros 410 are to the unit circle 430, more of the drift may becorrected but the system may be less stable.

In some implementations, the inverse transfer function can act as a highpass filter which can have the effect of amplifying or preserving highfrequency noise within the system. As such, a high frequency noisefilter may be applied to the output signal or waveform associated withthe drift-corrected reconstructed force 320.

FIG. 5 illustrates a method 500 for calibrating a force sensing deviceaccording to one or more embodiments of the present disclosure. In someembodiments the method 500 may be used to calibrate the force sensingdevice 200 shown and described above with respect to FIG. 2. In someembodiments, the method 500 may be performed at a factory in which thecomputing device and/or the force sensing device is manufactured,assembled and/or packaged. Accordingly, the method 500 may be used atthe factory to calibrate the force sensing device. In some embodiments,the calibration that is performed is device specific. That is, eachdevice may be calibrated using the method although differentcoefficients for the transfer function and its inverse may bedetermined. However, it is also contemplated that the method 500 may beused at other times so long as a reference model may be determined forcalibration purposes.

Method 500 begins at operation 510 when an input force is received(e.g., input waveform). In some embodiments, the input force may takethe form of a square waveform that represents an amount of forcereceived by the force sensing device during a press and release event onthe computing device or other such input device.

As the input waveform is received, the input waveform may be modified orotherwise changed by the force sensing device. That is, due to thestructure of the force sensing device and/or the elastic deformationproperties of the materials within the force sensing device, the inputwaveform may become distorted or delayed. More simply, drift inmagnitude and/or time of the input waveform may be introduced by thesystem. Accordingly, in operation 520 a system model is determined thatapproximates a transfer function associated with the force sensingdevice.

More specifically, in response to the input waveform that was received,an output waveform is generated by the system. The output waveform, andmore specifically reconstructed force represented by the output waveformmay include drift. The reconstructed force is then used to approximate atransfer function associated with the force sensing device. For example,because the input force is known, the reconstructed force is known, andthe materials in the force sensing device are known, a transfer functionof the system may be approximated.

Once the transfer function is approximated (and coefficients of thetransfer function are determined), a model of the transfer function maybe determined. In some implementations and as discussed above, the modelmay be a second-order system model of the force sensing device.

In operation 530 the coefficients of the model are stored or otherwiserecorded. For example, in some cases, the coefficients of the model maybe stored by the computing device in which the force sensing device isplaced.

Flow then proceeds to operation 540 and the inverse of the transferfunction is determined. The inverse transfer function is then applied tothe output waveform. In some implementations, applying the inversetransfer function to the output waveform generates a drift correctedoutput waveform that accounts for drift in the system.

In some embodiments, the stability of the transfer function, and morespecifically the inverse transfer function is determined. The stabilityof the transfer function may be determined by plotting the coefficientsof the transfer function on a zero-pole plot graph such as describedabove. For example, if the poles of the coefficients are within the unitcircle of the zero-pole plot graph, the system may be stable. In somecases, the coefficients may be changed and/or re-plotted to obtainvalues for coefficients that obtain a desired amount of driftcorrection, noise and/or stability.

FIG. 6 illustrates a method 600 for compensating for drift according toone or more embodiments of the present disclosure. In some embodiments,the method 600 may be used in conjunction with the method 500 describedabove. In other embodiments, the method 600 may be used as force inputis being provided on a computing device having a force sensing device.Thus, the method 600 may be correct for drift in real time orsubstantially real time. For example and as described above, if themagnitude and/or time of an input waveform is affected by drift, theuser experience with the force sensing device, and ultimately thecomputing device or other such input device may be negatively impacted.

However, in cases where drift is compensated for, a more accuraterepresentation of force input may be determined. As a result, receivedcommands, in the form of force input, may be more readily recognized andprocessed. In addition, different types of force input may be morereadily distinguishable from one another. That is, the force sensingdevice may be better able to distinguish between a first amount of forceassociated with a first command and a second amount of force that isassociated with a second, different command.

Method 600 begins at operation 610 in which an output signal is receivedfrom a force sensing device. The output signal may be associated with areceived amount of force sensed by the force sensing device. Forexample, the output signal may represent an amount of force provided bya user on a display or other surface of a computing device. As discussedabove, the received amount of force may be associated with a particularcommand or type of command.

Once the output signal is received, flow proceeds to operation 620 andan inverse filter is applied to the output signal to generate acorrected force signal. More specifically, drift may have beenintroduced to the output signal as a result of various materials inand/or structure of the force sensing device. Accordingly, a transferfunction associated with the model is approximated and a model of theforce sensing device is determined. That is, the transfer function thatrepresents the change from an input signal (that represents a receivedamount of force) to the output signal is approximated. The inverse ofthe transfer function is then applied to the output signal to correct orotherwise compensate for the drift.

Once the drift is accounted for, flow proceeds to operation 630 and thecorrected force signal may be provided to a processing unit of thecomputing device. Once the corrected force signal is received, theprocessing unit may instruct the computing device, and more specificallyvarious components, modules or programs of the computing device, tofunction or provide functionality based on the received amount of force.For example, the processing unit may be able to more readily determinethe difference in the received force input which may allow the computingdevice to utilize a wide range of commands having different force inputvalues than was previously available.

In some embodiments, drift in the system may also be compensated using adrift threshold. For example, at calibration, an amount of drift in thesystem may be determined. Once the amount of drift is determined, adrift threshold may be used to negate, substantially negate or otherwiseaccount for the detected drift.

In another embodiment, a time limit for a detected amount of force maybe implemented by the computing device. That is, if received forceexceeds a predetermined time limit (e.g., 2 seconds) the force sensingdevice will not continue detecting or otherwise processing a receivedforce input.

FIG. 7 is a block diagram illustrating exemplary components, such as,for example, hardware components, of a computing device 700 according toone or more embodiments of the present disclosure. In certainembodiments, the computing device 700 may be similar to the variouscomputing devices 100 described above. Although various components ofthe computing device 700 are shown, connections and communicationchannels between each of the components are omitted for simplicity.

In a basic configuration, the computing device 700 may include at leastone processor 705 or processing unit and a memory 710. The processor 705may be used to determine the various calibration parameters orcoefficients described above and/or may be used to apply the inversetransfer function to a waveform in real time or substantially real timeor as needed. The memory 710 may comprise, but is not limited to,volatile storage such as random access memory, non-volatile storage suchas read-only memory, flash memory, or any combination thereof. Thememory 710 may store an operating system 715 and one or more programmodules 720 suitable for running software applications 755. Theoperating system 715 may be configured to control the computing device700 and/or one or more software applications 755 being executed by theoperating system 715. The software applications 755 may include browserapplications, e-mail applications, calendaring applications, contactmanager applications, messaging applications, games, media playerapplications, time keeping applications and the like some or all ofwhich may receive or be controlled or altered using a received forceinput.

The computing device 700 may have additional features or functionalitythan those expressly described herein. For example, the computing device700 may also include additional data storage devices, removable andnon-removable, such as, for example, magnetic disks, optical disks, ortape. Exemplary storage devices are illustrated in FIG. 7 by removablestorage device 725 and a non-removable storage device 730. In certainembodiments, various program modules and data files may be stored in thememory 710.

As also shown in FIG. 7, the computing device 700 may include one ormore input devices 735. The input devices 735 may include a trackpad, akeyboard, a mouse, a pen or stylus, a sound input device, a touch inputdevice, a force sensing device and the like. The computing device 700may also include one or more output devices 740. The output devices 740may include a display, one or more speakers, a printer, and the like.The computing device 700 may also include one or more haptic actuators750 that are configured to provide both tactile and audio output.

The computing device 700 may also include one or more sensors 765. Thesensors may include, but are not limited to, accelerometers, ambientlight sensors, photodiodes, gyroscopes, magnetometers and so on.

The computing device 700 also includes communication connections 745that facilitate communications with additional computing devices 760.Such communication connections 745 may include a RF transmitter, areceiver, and/or transceiver circuitry, universal serial bus (USB)communications, parallel ports and/or serial ports.

As used herein, the term computer-readable media may include computerstorage media. Computer storage media may include volatile andnonvolatile media and/or removable and non-removable media implementedin any method or technology for the storage of information. Examplesinclude computer-readable instructions, data structures, or programmodules. The memory 710, the removable storage device 725, and thenon-removable storage device 730 are all examples of computer storagemedia. Computer storage media may include RAM, ROM, electricallyerasable read-only memory (EEPROM), flash memory or other memorytechnology, CD-ROM, digital versatile disks (DVD) or other opticalstorage, magnetic cassettes, magnetic tape, magnetic disk storage orother magnetic storage devices, or any other article of manufacturewhich can be used to store information and which can be accessed by thecomputing device 700. Any such computer storage media may be part of thecomputing device 700. Computer storage media may store instructionswhich, when executed by the processor 705, dynamically adjust a currentapplied to a light source.

In certain embodiments, the computing device 700 includes a power supplysuch as a battery, a solar cell, and the like that provides power toeach of the components shown. The power supply may also include anexternal power source, such as an AC adapter or other such connectorthat supplements or recharges the batteries. The computing device 700may also include a radio that performs the function of transmitting andreceiving radio frequency communications. Additionally, communicationsreceived by the radio may be disseminated to the application programs.Likewise, communications from the application programs may bedisseminated to the radio as needed.

Embodiments of the present disclosure are described above with referenceto block diagrams and operational illustrations of methods and the like.The operations described may occur out of the order as shown in any ofthe figures. Additionally, one or more operations may be removed orexecuted substantially concurrently. For example, two blocks shown insuccession may be executed substantially concurrently. Additionally, theblocks may be executed in the reverse order.

In addition, it will be understood that variations and modifications canbe effected within the spirit and scope of the disclosure. And eventhough specific embodiments have been described herein, it should benoted that the application is not limited to these embodiments. Inparticular, any features described with respect to one embodiment mayalso be used in other embodiments, where compatible. Likewise, thefeatures of the different embodiments may be exchanged, wherecompatible.

We claim:
 1. A computing device comprising: a force sensing device; anda processing unit operatively coupled to the force sensing device, theprocessing unit configured to: receive an output signal from the forcesensing device; and apply an inverse filter to the output signal togenerate a reconstructed output signal that compensates for drift,wherein the inverse filter is based, at least in part, on a model of theforce sensing device derived at a time the computing device iscalibrated.
 2. The computing device of claim 1, further comprising adisplay having a user interface, wherein the processing unit causes theuser interface to change state based, at least in part, on thereconstructed output signal.
 3. The computing device of claim 1, whereinthe output signal is associated with an amount of force applied to theforce sensing device.
 4. The computing device of claim 1, wherein themodel of the force sensing device is a second-order system model.
 5. Thecomputing device of claim 1, wherein coefficients of the model aredetermined using a polynomial fit on the output signal.
 6. The computingdevice of claim 5, wherein the coefficients of the model are stored byfirmware of the computing device.
 7. The computing device of claim 1,wherein the processing unit is further configured to apply a noisefilter to the reconstructed output signal.
 8. A method for correctingdrift associated with a force sensing device associated with a computingdevice, the method comprising: receiving an output signal from the forcesensing device; and applying an inverse filter to the output signal togenerate a reconstructed output signal that compensates for drift,wherein the inverse filter is based, at least in part, on a model of theforce sensing device derived at a time the computing device iscalibrated.
 9. The method of claim 8, further comprising causing a userinterface associated with the computing device to change state based, atleast in part, on the reconstructed output signal.
 10. The method ofclaim 8, wherein the output signal is associated with an amount of forceapplied to the force sensing device.
 11. The method of claim 8, whereinthe model of the force sensing device is a second-order system model.12. The method of claim 8, wherein coefficients of the model aredetermined using a polynomial fit on the output signal.
 13. The methodof claim 8, further comprising applying a noise filter to thereconstructed output signal.